// 변수 선언
var canvas;												// 캔버스 객체  		
var canvas2d;											// 캔버스 2d 객체	
var canvasWidth=960;							// 캔버스 전체 너비 설정	
var canvasHeight=530;							// 캔버스 전체 높이 설정
var cardWidth;										// 카드 너비
var cardHeight;										// 카드 높이
var cardArr=[];											// 카드 저장 배열  	
var cx=canvasWidth*0.07;					// 초기 카드 첫번째줄 x좌표
var cx2=canvasWidth*0.07;					// 초기 카드 두번째줄 x좌표
var cy1=canvasHeight*0.28;				// 초기 카드 첫번째줄 y좌표	
var cy2=canvasHeight*0.52;				// 초기 카드 두번째줄 y좌표
var sx;														// 카드 x좌표
var sy;														// 카드 y좌표
var drawback;											// 카드 뒷면 그리기
var drawface;											// 카드 앞면 그리기
var cardno;												// 카드 번호
var no=1;													// 카드를 순서대로 뒤집은지 확인하기 위한 키 값 설정 
var t;															// 타이머 함수 호출
var i=0;														// 시간을 계산 하기 위한 변수 초기화
var timerfirst=true;									// 타이머를 한번만 호출하기 위한 변수 선언
var index=0;
var countArr=[0,0,0];
	
// 초기화 함수 => 페이지 로딩시 초기화
function init() {
	canvas = document.getElementById('canvas');
	canvas2d = document.getElementById('canvas').getContext('2d');
	canvas.addEventListener('click', choose, false);
	drawad();
	makedeck()  		
}

// 카드 객체 생성
function Card(cardWidth, cardHeight, timg, no) {
	this.sx;
	this.sy;
	this.cardWidth = cardWidth;
	this.cardHeight = cardHeight;
	this.timg = timg;
	this.drawback = drawback;
	this.drawface = drawface;
	var imga = new Image();  		
	imga.src = timg;  		
	this.img = imga;
	this.cardno = no;
}
	
// 광고 문구 그리기
function drawad() {
	canvas2d.fillStyle = "rgb(230,230,230)";
 	canvas2d.fillRect(0, canvasHeight*0.06, canvasWidth*1 , canvasHeight*0.16);
	canvas2d.font="bold 40px Tahoma";
	canvas2d.fillStyle="rgb(0,144,183)";
	canvas2d.fillText("SONY MDR-1R을 찾아라!!!", canvasWidth*0.25, canvasHeight*0.17);
}

// 카드 뒷면 그리기
function drawback() {
	switch(countArr[index]) {
		case 0 :
	  		canvas2d.fillStyle = "rgb(255,255,0)";
	  		break;
		case 1 :
	  		canvas2d.fillStyle = "rgb(255,225,0)";
	  		break;
		case 2 :
	  		canvas2d.fillStyle = "rgb(255,195,0)";
	  		break;
		case 3 :
	  		canvas2d.fillStyle = "rgb(255,165,0)";
	  		break;
		case 4 :
	  		canvas2d.fillStyle = "rgb(255,135,0)";
	  		break;
		case 5 :
	  		canvas2d.fillStyle = "rgb(255,105,0)";
	  		break;
		case 6 :
	  		canvas2d.fillStyle = "rgb(255,75,0)";
	  		break;
		case 7 :
	  		canvas2d.fillStyle = "rgb(255,45,0)";
	  		break;
		case 8 :
	  		canvas2d.fillStyle = "rgb(255,15,0)";
	  		break;
		case 9 :
	  		canvas2d.fillStyle = "rgb(255,0,0)";
	  		break;
	}	
	canvas2d.fillRect(this.sx, this.sy, this.cardWidth, this.cardHeight);
}
	
function drawface() {
	canvas2d.fillStyle = "rgb(255,255,255)";
	canvas2d.fillRect(this.sx, this.sy, this.cardWidth, this.cardHeight);
	canvas2d.drawImage(this.img, this.sx, this.sy, this.cardWidth, this.cardHeight);
}

//카드 만들기
function makedeck() {
	cardWidth = canvasWidth*0.25;
	cardHeight = canvasHeight*0.4;
	var img;
	var card;
	for(var i=1; i<4; i++){
		if(i==1) {
			img = "crash_game_img/event.jpg";
   			card = new Card(cardWidth, cardHeight, img, i);
		} else {
			img = "crash_game_img/icon1.png";
			card = new Card(cardWidth, cardHeight, img, i);
		}
		cardArr.push(card);
	}
	suffle();
	carddrawback();  		
}
	
// 카드 뒤집기
function carddrawback() {
	for(var i=0; i<cardArr.length; i++){
		cardArr[i].drawback();
	}
	if(timerfirst) {
		StartTimer();
		timerfirst=false;
	}
}

// 카드 섞기
function suffle() {
	var cardLength = cardArr.length;							// 카드 배열 길이 
	var select;																		// 카드 배열 선택 인덱스
	var cardRandomArr = [];											// 랜덤 카드 저장 배열
	for(var i=0; i<cardLength; i++){
		select = Math.floor(Math.random()*cardArr.length);
		cardRandomArr.push(cardArr[select]);			// card배열에 무작위로 추출된 카드 삽입   			
		cardArr.splice(select,1);										// card배열에서 무작위로 추출된 카드 제거
		cardRandomArr[i].sx=cx;										// 카드 6개의 첫번째 x좌표를 50으로 설정
  		cardRandomArr[i].sy=cy1;									// 카드 6개의 y좌표를 150으로 설정
    	cx += (cardWidth+canvasWidth*0.05);				// 카드 5개의 x좌표를 카드너비+30씩 증가하게 설정   				
	}
	cardArr=cardRandomArr;										// 무작위로 섞인 카드를 원래 카드 배열로 지정
	cardRandomArr=[];													// 무작위 카드 배열 초기화
}

// 마우스 클릭시 함수
function choose(ev) {
	if(ev.offsetX!=null) {
		var cx=ev.offsetX;
		var cy=ev.offsetY;
	} else if(ev.layerX!=null) {
		var cx=ev.layerX;
		var cy=ev.layerY;
	}  		
	findcard(cx,cy);
}
	
// 카드 찾기 및 버그 방지
function findcard(cx,cy){
	var card;  		
	for(index=0; index<cardArr.length; index++){
		card = cardArr[index];   			
		if((cx>=card.sx && cx<=(card.sx+card.cardWidth)) && (cy>=card.sy && cy<=(card.sy+card.cardHeight))) {
			if(countArr[index]<10) {
   				countArr[index]++;
				card.drawback();
			} 
			if(countArr[index]==10) {
   				card.drawface();
   				if(card.cardno==1) {
   					StopTimer();
   		  		}
			}
 		}    		
	}  		
}
	
function StartTimer()	{
	t = setInterval("TimeCheck()",10);
}

function TimeCheck() {
	var min = Math.floor(i/6000); 												// 분 구하기
	if(min<10) {
		min = "0"+min;
	}
	var sec = Math.floor(i/100);						 				   			// 초 구하기
	if(sec>59) {
		sec = sec%60;
	}
	if(sec<10) {
		sec = "0"+sec;
	}
	var msec = i%100; 																	// milli초 구하기
	canvas2d.fillStyle = "rgb(0,0,0)";
	canvas2d.fillRect(canvasWidth*0.37, canvasHeight*0.8, canvasWidth*0.26, canvasHeight*0.14); 		
	canvas2d.font="bold 35px Tahoma";
	canvas2d.fillStyle="rgb(255,255,255)";
	canvas2d.fillText(min+" : "+sec+" : "+msec, canvasWidth*0.4, canvasHeight*0.89); // 텍스트폼에 출력.
 	 i++; // 1증가
}

function StopTimer()	{
	i = 0; // 0으로 초기화
	clearInterval(t); // setInterval()함수 정지시키기..
	setTimeout(gameOver, 1500);	
}
	
function gameOver(msg){
	window.HybridApp.gameOver(msg);
} 	
	